//package com.manage.project.tool.swagger.wechat.controller;
//
//import cn.binarywang.wx.miniapp.api.WxMaService;
//import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
//import com.manage.framework.web.domain.AjaxResult;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import me.chanjar.weixin.common.error.WxErrorException;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 微信小程序用户接口
// */
//@Api("微信小程序用户接口")
//@RestController
//@RequestMapping("/api/wechat")
//public class WxMaUserController {
//    private final Logger logger = LoggerFactory.getLogger(this.getClass());
//
//    @Autowired
//    private WxMaService wxService;
//
//    @Autowired
//    private IBizMemberService bizMemberService;
//
//    /**
//     * 登陆接口
//     */
//    @ApiOperation("登陆接口")
//    @GetMapping("login")
//    public AjaxResult login(String code) {
//        if (StringUtils.isBlank(code)) {
//            return AjaxResult.error("empty jscode");
//        }
//
//        try {
//            WxMaJscode2SessionResult session = this.wxService.getUserService().getSessionInfo(code);
//            this.logger.info(session.getSessionKey());
//            this.logger.info(session.getOpenid());
//
//            BizMember bizMember = new BizMember();
//            bizMember.setOpenid(session.getOpenid());
//            List<BizMember> users = bizMemberService.selectBizMemberList(bizMember);
//            if(users.size()==0) {
//                return AjaxResult.error("用户未注册");
//            }
//            //查询用户信息
//
//            //生成token
//            Map<String, Object> map = new HashMap<String, Object>();
//            map.put("userInfo", users.get(0));
//            return AjaxResult.success(map);
//        } catch (Exception e) {
//            this.logger.error(e.getMessage(), e);
//            return AjaxResult.error();
//        }
//    }
//
//    @ApiOperation("授权注册")
//    @GetMapping("register")
//    public AjaxResult register(String avatarUrl, String nickname, String gender, String code, String sqm, String xm, String xh) {
//        try {
//            String openid = this.wxService.getUserService().getSessionInfo(code).getOpenid();
//            //查询用户信息
//            BizMember bizMember = new BizMember();
//            bizMember.setField11("1");
//            bizMember.setOpenid(openid);
//            List<BizMember> users = bizMemberService.selectBizMemberList(bizMember);
//            if(gender.equals("0")){
//                gender="女";
//            }else{
//                gender="男";
//            }
//            if(users.size()>0) {
//                if(!nickname.equals("微信用户")){
//                    bizMember = users.get(0);
//                    bizMember.setRealName(xm);
//                    bizMember.setLoginName(xh);
//                    bizMember.setField1(sqm);
//                    bizMember.setAvatarUrl(avatarUrl);
//                    bizMember.setNickname(nickname);
//                    bizMember.setGender(gender);
//                    bizMemberService.updateBizMember(bizMember);
//                }
//                return AjaxResult.success(users.get(0));
//            }
//            //注册
//            bizMember.setAvatarUrl(avatarUrl);
//            bizMember.setOpenid(openid);
//            if(StringUtils.isNotBlank(nickname)){
//                bizMember.setNickname(filterUtf8mb4(nickname));
//            }
//            bizMember.setGender(gender);
//            bizMember.setCreateTime(new Date());
//            bizMemberService.insertBizMember(bizMember);
//            return AjaxResult.success(bizMember);
//        } catch (WxErrorException e) {
//            e.printStackTrace();
//            return AjaxResult.error();
//        }
//    }
//
//    public static String filterUtf8mb4(String str) {
//        final int LAST_BMP = 0xFFFF;
//        StringBuilder sb = new StringBuilder(str.length());
//        for (int i = 0; i < str.length(); i++) {
//            int codePoint = str.codePointAt(i);
//            if (codePoint < LAST_BMP) {
//                sb.appendCodePoint(codePoint);
//            } else {
//                i++;
//            }
//        }
//        return sb.toString();
//    }
//
//}
